/*
 * MapperSolitudAyudantia.java
 *
 * Created on August 15, 2007, 7:11 PM
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package hero.mapper;

import hero.interfaces.BnRoleLocal;
import hero.util.HeroException;
import java.util.*;

/**
 *
 * @author kabad
 */
public class MapperSolitudAyudantia implements hero.mapper.RoleMapperI {

    final String solicitarSerAyudante = "Solicitar Ayudantia";
    final String solicitarAyudantes = "Solicitar Ayudantes";
    final String solicitarCambio = "Solicitar Cambio de Carrera o Especializacion";
    final String solicitarConvalidacion = "Solicitar Convalidacion de Materia";
    final String solicitarAperturaTopico = "Solicitar Apertura Topico";
    final String solicitarAperturaPostgrado = "Solicitar Apertura Postgrado";

    /** Creates a new instance of MapperSolitudAyudantia */
    public MapperSolitudAyudantia() {
    }

    public Collection searchMembers(Object b, BnRoleLocal n, String userName) throws HeroException {
        Collection users = new ArrayList();
        String roleName = n.getName().toLowerCase();
        String nombreInstanciaProyecto = n.getBnProject().getName();

        int indice = nombreInstanciaProyecto.indexOf("_");
        String nombreModeloProyecto = nombreInstanciaProyecto.substring(0, indice);

        System.out.println("********************************************");
        System.out.println("Maper: MapperSolitudAyudantia");
        System.out.println("Instancia Proyecto: " + nombreInstanciaProyecto);
        System.out.println("Creador: " + userName);
        System.out.println("Rol: " + roleName);

        /*******************************************************************
         *Esto es para ver si pertenece al Modelo de Proceso solicitarSerAyudante
         *******************************************************************/
        if (nombreModeloProyecto.equals(solicitarSerAyudante)) {
            System.out.println("Modelo Proyecto: " + nombreModeloProyecto);
            if (roleName.equals("estudiante")) {
                users.add(n.getBnProject().getCreator());
            }
        }
        /*************************************************************
         *Esto es para ver si pertenece al Modelo de Proceso SolicitarAyudantes
         *********************************************************************/
        if (nombreModeloProyecto.equals(solicitarAyudantes)) {
            System.out.println("Modelo Proyecto: " + nombreModeloProyecto);
            if (roleName.equals("profesor")) {
                users.add(n.getBnProject().getCreator());
                System.out.println("profesor");
            } else if (roleName.equals("decano")) {
                users.add("kabad");
                System.out.println("decano");
            } else if (roleName.equals("secretaria")) {
                users.add("lrivas");
                users.add("gfsanche");
                System.out.println("secretaria");
            }
            System.out.println("+++++++");
        }

        /*************************************************************
         *Esto es para ver si pertenece al Modelo de Proceso Solicitar cambio carrera
         *********************************************************************/
        if (nombreModeloProyecto.equals(solicitarCambio)) {
            System.out.println("Modelo Proyecto: " + nombreModeloProyecto);
            if (roleName.equals("estudiante")) {
                users.add(n.getBnProject().getCreator());
            } else if (roleName.equals("subdecano")) {
                users.add("lbeltran");
                System.out.println("usuario anadido: lbeltran");
            } else if (roleName.equals("secretaria")) {
                users.add("lrivas");
                 users.add("mponton");
                 users.add("gfsanche");
                System.out.println("usuario anadido: lrivas");
            } else if (roleName.equals("coordinadorcarreranueva")) {
                users.add("atapia");
                users.add("cabad");
                users.add("guido");
                users.add("javiles");
                users.add("restrada");
                users.add("amanzur");
                users.add("ahanze");
                users.add("lfreire");
                users.add("aespinal");
            //el problema con esto es que todos son parte del proceso, es decir para una insatnacia creada, 
            //para todos estos prof. es un proceos en curso                    
            //solo me queda guardar los datos antes de instanciar el proceso, y leer el usuario que se debe agregar desde la base

            }
        }

        /*************************************************************
         *Esto es para ver si pertenece al Modelo de Proceso Solicitar convalidacion materia
         *********************************************************************/
        if (nombreModeloProyecto.equals(solicitarConvalidacion)) {
            System.out.println("Modelo Proyecto: " + nombreModeloProyecto);
            if (roleName.equals("estudiante")) {
                users.add(n.getBnProject().getCreator());
            } else if (roleName.equals("subdecano")) {
                users.add("lbeltran");
                System.out.println("usuario anadido: lbeltran");
            } else if (roleName.equals("secretaria")) {
                users.add("lrivas");
                users.add("gfsanche");
                  users.add("mponton");
                System.out.println("usuario anadido: lrivas");
            } else if (roleName.equals("profesor")) {
                //todos los profesores podrian ser, se debe usar un performer asigment con el atributo evaluador
                users.add("atapia");
                users.add("cabad");
                users.add("guido");
            }
        }

        /*************************************************************
         *Esto es para ver si pertenece al Modelo de Proceso Solicitar apertura topico
         *********************************************************************/
        if (nombreModeloProyecto.equals(solicitarAperturaTopico)) {
            System.out.println("Modelo Proyecto: " + nombreModeloProyecto);
            if (roleName.equals("profesor")) {
                users.add(n.getBnProject().getCreator());
            } else if (roleName.equals("decano")) {
                users.add("kabad");
                System.out.println("usuario anadido: kabad");
            } else if (roleName.equals("secretaria")) {
                users.add("lrivas");
                users.add("gfsanche");
                System.out.println("usuario anadido: lrivas");
            } else if (roleName.equals("evaluador")) {
                //todos los profesores podrian ser, se debe usar un performer asigment con el atributo evaluador
                users.add("atapia");
                users.add("cabad");
                users.add("guido");
                users.add("comodin");
               }
        }



        /*************************************************************
         *Esto es para ver si pertenece al Modelo de Proceso Solicitar apertura postgrado
         *********************************************************************/
        if (nombreModeloProyecto.equals(solicitarAperturaPostgrado)) {
            System.out.println("Modelo Proyecto: " + nombreModeloProyecto);
            if (roleName.equals("profesor")) {
                users.add(n.getBnProject().getCreator());
            } else if (roleName.equals("decano")) {
                users.add("kabad");
                System.out.println("usuario anadido: kabad");
            } else if (roleName.equals("secretaria")) {
                users.add("lrivas");
                users.add("mponton");
users.add("gfsanche");
                System.out.println("usuario anadido: lrivas");
            } else if (roleName.equals("evaluador")) {
                //todos los profesores podrian ser, se debe usar un performer asigment con el atributo evaluador
                users.add("atapia");
                users.add("cabad");
                users.add("guido");
                users.add("comodin");
                
            }
        }
        System.out.println("################################");
        return users;


    }
}
